package com.unitd.frame.sso.web.handler.impl;

import com.unitd.frame.comm.utils.http.HttpUtils;
import com.unitd.frame.sso.web.handler.ISSOHandler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @desc SSO 默认拦截处理器,自定义 Handler 可继承该类.
 * @filename SsoDefaultHandler.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2016/10/18
 */
public class DefaultSSOHandler implements ISSOHandler {
	private static DefaultSSOHandler handler;

	/**
	 * @desc 创建对象
	 * @return
	 */
	public static DefaultSSOHandler getInstance() {
		if (handler == null) {
			handler = new DefaultSSOHandler();
		}
		return handler;
	}

	/**
	 * @desc token 为空未登录时, 处理普通http请求
	 * 返回 true 继续执行(清理登录状态,重定向至登录界面),false 停止执行
	 * @param request http请求对象
	 * @param response http相应对象
	 * @return true 继续执行,false 停止执行
	 */
	public boolean preTokenIsNull(HttpServletRequest request, HttpServletResponse response) {
		/* 预留子类处理 */
		return true;
	}

	/**
	 * @desc token 为空未登录时,处理 AJAX 请求
	 * 返回 HTTP 状态码 401(未授权) 请求要求身份验证. 对于需要登录的网页,服务器可能返回此响应
	 * @param request http请求对象
	 * @param response http相应对象
	 * @return true 继续执行,false 停止执行
	 */
	public boolean preTokenIsNullAjax(HttpServletRequest request, HttpServletResponse response) {
		HttpUtils.ajaxStatus(response, 401, "提示登录异常,请再次登录!");
		return false;
	}
}